/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author MoroComputer
 */
public class Banca extends DML {

    private int[] codigoMembrosDaBanca;
    private Defesa defesa;
    private Professor professor;

    public Banca(int[] codigoMembrosDaBanca) {
        super.table = "banca";
        this.codigoMembrosDaBanca = codigoMembrosDaBanca;
    }

    public Banca() {
        super.table = "banca";
    }

    public boolean cadastrarMembrosDeBanca(int idOrientador, int idAluno) {
        if (this.codigoMembrosDaBanca.length == 3) {
            if (this.codigoMembrosDaBanca[0] != 0 && this.codigoMembrosDaBanca[1] != 0 && this.codigoMembrosDaBanca[2] != 0 && idOrientador != 0) {
                try {
                    int idBanca = recuperarIdBanca(codigoMembrosDaBanca, idOrientador);
                    if (idBanca == 0) {
                        String sql = "insert into " + super.table + "(codMembro1,codMembro2,codMembro3,cod_orientador) values(?,?,?,?);";
                        super.conecta = ConectaBD.getInstance();
                        super.preparedStatement = super.conecta.getConnection().prepareStatement(sql);
                        super.preparedStatement.setInt(1, this.codigoMembrosDaBanca[0]);
                        super.preparedStatement.setInt(2, this.codigoMembrosDaBanca[1]);
                        super.preparedStatement.setInt(3, this.codigoMembrosDaBanca[2]);
                        super.preparedStatement.setInt(4, idOrientador);
                        super.preparedStatement.execute();
                        super.preparedStatement.close();

                        idBanca = this.recuperarIdBanca(this.codigoMembrosDaBanca, idOrientador);
                        if (idBanca != 0) {
                            this.defesa = new Defesa(null, null, null, null);
                            this.defesa.setarBancaEmDefesa(idBanca, idAluno);
                            return true;
                        }
                    } else {
                        this.defesa = new Defesa(null, null, null, null);
                        this.defesa.setarBancaEmDefesa(idBanca, idAluno);
                        return true;
                    }
                } catch (SQLException ex) {
                    ex.printStackTrace();
                } finally {
                    super.conecta.encerrarConexao();
                }
            }
        } else {
            return false;
        }
        return false;
    }

    public ArrayList<String> recuperaProfessoresDaBanca(int idBanca) {
        if (idBanca != 0) {
            String sql = "select codMembro1,codMembro2,codMembro3 from " + super.table + " where idbanca=" + idBanca + ";";
            try {
                super.conecta = ConectaBD.getInstance();
                super.statement = super.conecta.getConnection().createStatement();
                super.resultSet = super.statement.executeQuery(sql);
                while (super.resultSet.next()) {
                    int idProfessor1 = super.resultSet.getInt(1);
                    int idProfessor2 = super.resultSet.getInt(2);
                    int idProfessor3 = super.resultSet.getInt(3);

                    if (idProfessor1 != 0 && idProfessor2 != 0 && idProfessor3 != 0) {
                        ArrayList<String> nomes = new ArrayList<>();
                        this.professor = new Professor();
                        nomes.add(this.professor.recuperaNomeProfessor(idProfessor1));
                        nomes.add(this.professor.recuperaNomeProfessor(idProfessor2));
                        nomes.add(this.professor.recuperaNomeProfessor(idProfessor3));
                        return nomes;
                    }
                }
                return null;
            } catch (SQLException erroSQL) {

            }
        }
        return null;
    }

    public int recuperarIdBanca(int[] codigos, int idOrientador) {
        if (codigos.length == 3) {
            String sql = "select idbanca from " + super.table + " where 	codMembro1=" + codigos[0]
                    + " and codMembro2=" + codigos[1] + " and codMembro3=" + codigos[2] + " and cod_orientador=" + idOrientador + ";";
            try {
                int idBanca = 0;
                super.conecta = ConectaBD.getInstance();
                super.statement = super.conecta.getConnection().createStatement();
                super.resultSet = super.statement.executeQuery(sql);

                while (super.resultSet.next()) {
                    idBanca = super.resultSet.getInt(1);
                }
                return idBanca;
            } catch (SQLException erroSQL) {

            }
        }
        return 0;
    }
}
